#pragma once

#include "KKComm.h"
#include <vector>

class KKWindow;

class KKApplication
{
  public:
    static KKApplication *GetInstance();
    void Run();
    void Quit();

    // Window Manager
  public:
    void OnEvent(KKWindow *win, KKEvent &event);
    void Log(KKWindow *win, const char* fmt, ...);
    KKWindow *WindowCreate(int width, int height, const char *title, int flags);
    void WindowRemove(KKWindow *win);
    std::vector<KKWindow *> m_winList;

  private:
    void _RenderWinUI(KKWindow *win);
};
